package com.zlm.common.base;

import org.apache.ibatis.session.RowBounds;

import java.io.Serializable;
import java.util.List;

/**
 * 基础SERVICE
 * <"Entity", "Pk">
 * Entity 数据库对应的实体对象
 * Pk 数据库表对应的主键
 *
 * @Author: duyufu
 * @Date: 2019/3/14 12:02
 */
public abstract interface BaseService<Entity extends Serializable> {

    /**
     * 查询数量-空参
     *
     * @return
     */
    public int getCount();

    /**
     * 查询数量-有参
     *
     * @param entity
     * @return
     */
    public int getCount(Entity entity);

    /**
     * 获取实体
     *
     * @param entity
     * @return
     */
    public Entity getEntity(Entity entity);

    /**
     * 获取集合-空参
     *
     * @return
     */
    public List<Entity> getAll();

    /**
     * 获取有限集合
     *
     * @param entity
     * @param rowBounds
     * @return
     */
    public List<Entity> getList(Entity entity, RowBounds rowBounds);

    /**
     * 获取集合-有参
     *
     * @param entity
     * @return
     */
    public List<Entity> getList(Entity entity);

    /**
     * 增加方法
     *
     * @param entity
     * @return
     */
    public boolean add(Entity entity);

    /**
     * 修改方法
     *
     * @param entity
     * @return
     */
    public boolean modify(Entity entity);

    /**
     * 删除方法
     *
     * @param entity
     * @return
     */
    public boolean delete(Entity entity);

    /**
     * 分页方法
     * @param pageNumber
     * @param pageSize
     * @param count
     * @param list
     * @return
     */
    public PageEntity getPage(Integer pageNumber, Integer pageSize, Integer count, List<?> list);

    /**
     * 分页方法
     * @param pageEntity
     * @param count
     * @param list
     * @return
     */
    public PageEntity getPage(PageEntity pageEntity, Integer count, List<?> list);
}
